<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>

    <script>
        /*
            带var是一个变量，不带var本质是window上的一个属性。
            在全局作用域下用var声明一个变量，也相当于给window全局对象设置了一个属性，变量值就是属性值,undefined
            私有作用域下声明的私有变量和全局window没关系
            全局变量和window中的属性存在映射机制。
            全局作用域下的变量值修改，window上的变量值也被修改
            window上的变量值修改，全局作用域下变量值也被修改

            判断对象是否用有某个属性？ in hasOwnProperty

            不带var本质是window上的属性。不是一个变量，就不存在变量提升，调用会报变量未定义错误。

        */

        function fn() {
            console.log(window.b) //undefined window上没有b属性。
            console.log(b) //报错 b不是变量，未被定义。
            var a = 12;
            b = 13 //上一级作用域查找b,没有找到变量b,就找window,相当于给window添加属性b
            console.log(a, b) //12 13 b=window.b=13
        }
        fn()
        // a is not defined
        console.log(b) //b=13 a未被定义调用报错。 window.b=13

        
       











    </script>
</body>

</html>